<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 
        字符串常用方法
        + 通用语法: 字符串.方法名()
        + 注意: 所有的字符串常用方法都会不改变原始字符串, 而是以返回值形式给出结果
                返回的是新字符串  
      1. charAt()
        + 语法: 字符串.charAt(索引)
        + 返回值: 该索引位置的字符
          => 如果没有该索引位置, 返回的是 空字符串

      2. charCodeAt()
        + 语法: 字符串.charCodeAt(索引)
        + 返回值: 该索引位置字符的 unicode 编码
          => 如果没有该索引位置, 返回的是 NaN

        // 知道unicode编码  得到对应的字符 

        String.fromCharCode(unicode编码)

     4. toUpperCase()
        + 语法: 字符串.toUpperCase()
        + 返回值: 将原始字符串内的所有字母转换成大写

      5. toLowerCase()
        + 语法: 字符串.toLowerCase()
        + 返回值: 将原始字符串内的所有字母转换成小写

      数组 截取部分元素   数组.splice(开始的索引,多少个)
      数组 截取部分元素   数组.slice(开始的索引,结束的索引)

      6. substr()  像splice
        + 语法: 字符串.substr(开始索引, 多少个)
        + 返回值: 截取出来的部分字符串

      7. substring()   像slice
        + 语法: 字符串.substring(开始索引, 结束索引)
        + 特点: 包前不包后
        + 返回值: 截取出来的部分字符串

      8. slice()    
        + 语法: 字符串.slice(开始索引, 结束索引)
        + 特点: 包前不包后, 填写负整数
        + 返回值: 截取出来的部分字符串

      9. split()
        + 语法: 字符串.split('分隔符')
        + 返回值: 是一个数组
          => 按照分隔符把字符串分开成为几段内容

      10. concat()
        + 语法: 字符串.concat(字符串1, 字符串2, ...)
        + 返回值: 拼接好的字符串

      11. indexOf()
        + 语法: 字符串.indexOf(查找的字符, 开始索引)
        + 返回值:
          => 如果原始字符串内有该字符串片段, 那么是该字符串片段第一次出现的首字母索引位置
          => 如果原始字符串内没有该字符串片段, 那么是 -1

      12. lastIndexOf()
        + 语法: 字符串.lastIndexOf(字符串片段, 开始索引)
        + 返回值:
          => 如果原始字符串内有该字符串片段, 那么是该字符串片段第一次出现的首字母索引位置
          => 如果原始字符串内没有该字符串片段, 那么是 -1

      13. includes()
        + 语法: 字符串.includes(字符串片段)
        + 作用: 该字符串中是否包含该字符串片段
        + 返回值: 一个布尔值
          => true 说明有该字符串片段
          => false 说明没有该字符串片段

      14. startsWith()
        + 语法: 字符串.startsWith(字符串片段)
        + 作用: 判断该字符串是否以该字符串片段开头
        + 返回值: 一个布尔值
          => true 说明以该字符串片段开头
          => false 说明不以该字符串片段开头

      15. endsWith()
        + 语法: 字符串.endsWith(字符串片段)
        + 作用: 判断该字符串是否以该字符串片段结尾
        + 返回值: 一个布尔值
          => true 说明以该字符串片段结尾
          => false 说明不以该字符串片段结尾

      16. trim()
        + 语法: 字符串.trim()
        + 作用: 去除字符串首尾空白
        + 返回值: 去除首尾空白后的字符串

      17. trimStart() / trimLeft()
        + 语法:
          => 字符串.trimStart()
          => 字符串.trimLeft()
        + 返回值: 去除开始位置空白以后的字符串

      18. trimEnd() / trimRight()
        + 语法:
          => 字符串.trimEnd()
          => 字符串.trimRight()
        + 返回值: 去除结束位置空白以后的字符串

      19. repalce()
        + 语法: 字符串.replace(换下字符, 换上字符)
        + 作用: 替换原始字符串内的片段
        + 注意: 只能替换一个
        + 返回值: 替换好的字符串
        
        
        
        */

        // charAt()


        // var str1 = '昨天晚上梦到你了,大人们都说梦是相反的,所以应该是你嫁给我';
        // console.log(str1.charAt(18)); // 索引18对应的元素     的
        // console.log(str1.charAt(66)); // 没有66这个索引  结果是 空 

        // var  str2 = 'good good study day day up';
        // console.log(str2.charCodeAt(3)); // a 97  b 98  c 99  d 100

        // var res = String.fromCharCode(99);
        // var data = parseInt(4e00,16)
        // var res = String.fromCharCode(data);

        // console.log(res);


        //转大小写  

        // 字符串.toUpperCase();
        // 字符串.toLowerCase();
        // var  str3 = 'good good study day day up';
        // console.log(str3.toUpperCase());
        // console.log('I LOVE YOU'.toLowerCase());

        // 截取字符串  

        // 数组.substr(开始的索引,截取多少个);
        // 数组.substring(开始的索引,结束的索引); [开始的索引,结束的索引)
        // 数组.slice(开始的索引,结束的索引)

        // var str4 = '如果不能一夜暴富,我想一夜抱你';

        // var data1 = str4.substr(6,2); //下标6开始截取2个
        // console.log(data1);

        // var data2 = str4.substring(6,8); //下标6开始到下标8结束 不含下标8
        // console.log(data2);

        // var data3 = str4.slice(6,8); //下标6开始到下标8结束 不含下标8
        // console.log(data3);

        // var data4 = str4.slice(0,-2); //下标6开始到下标-2结束 不含下标-2
        // console.log(data4);


        // var data5 = str4.substring(0,-2); //不支持-整数 
        // console.log(data5); // 空 

        // 字符串->数组   split(分隔符)  
        // 数组->字符串  join(连接符)
        // var str5 = '我不懂什么赔率,我只懂得陪你';
        // var res = str5.split();
        // // 如果不写分隔符  整个字符串作为
        // // 一个元素 放到空数组中  ['我不懂什么赔率,我只懂得陪你'];
        // console.log(res); 
        // var res = str5.split(',');//['我不懂什么赔率', '我只懂得陪你']
        // console.log(res);
        // var res = str5.split('');
        // console.log(res); // ['我', '不', '懂', '什', '么', '赔', '率', ',', '我', '只', '懂', '得', '陪', '你']

        // var res = str5.split('赔率'); // 分隔符 可以是一个词语
        // console.log(res);//['我不懂什么', ',我只懂得陪你']


        // 拼接字符串  

        // var str6 = '我真的太笨了';
        // var res = str6.concat('除了爱你','什么都做不好');
        // console.log(res);


        // 查找指定的字符 


        // var str7 = '我拒绝了好多异性,就是为了等你做我的对象';

        // var res1 = str7.indexOf('异');// 第一次出现的位置
        // var res2 = str7.indexOf('异性');// 第一次出现的位置
        // // 从左向右找 
        // console.log(res1, res2);
        // // 从右向左找
        // var res3 = str7.lastIndexOf('异');// 第一次出现的位置
        // var res4 = str7.lastIndexOf('异性');// 第一次出现的位置
        // console.log(res3, res4);

        // var res5 = str7.indexOf('孟');// 第一次出现的位置
        // var res6 = str7.indexOf('孟子');// 第一次出现的位置
        // console.log(res5, res6);  // 找不到返回-1


        // var str8 = '你的快递到了?什么快递? 我的一厢情愿';
        // var res8 = str8.indexOf('快递');//2 
        // var res9 = str8.indexOf('快递',6);// 9
        // var res10 = str8.lastIndexOf('快递');// 9
        // var res11 = str8.lastIndexOf('快递',6);//2

        // console.log(res8, res9,res10,res11);

        // 判断齁甜是否在字符串中    
        // 结果是布尔类型 
        // var str9 = '我们这边昼夜温差大,所以我超甜';
        // console.log(str9.includes('齁甜'));

        // https://www.baidu.com 

        // var strs = ['https://www.qfedu.com','http://www.baidu.com','www.sina.com']
        // var new_arr = [];
        // for(var v of strs){
        //     if(v.startsWith('https://') || v.startsWith('http://')){
        //         new_arr.push(v);
        //     }
        // }

        // console.log(new_arr);


        // var strs2 = ['a.jpg','b.gif','c.docx','d.pdf','e.md','f.js','g.txt']
        // var new_arr = []
        // for(var v of strs2){
        //     if(v.endsWith('.jpg') || v.endsWith('.gif')){
        //         new_arr.push(v);
        //     }
        // }
        // console.log(new_arr);

        // var agree = ['gif','jpg','png','webp','bmp'];
        // var new_arr = []
        // for(var v of strs2){
        //     var res = v.split('.')[1];
        //     if(agree.indexOf(res) != -1){
        //         new_arr.push(v);
        //     }
        // }
        // console.log(new_arr);


        // 去除空白 

        // var str11 = '给你科普一下莓果的种类,有草莓,蓝莓,蔓越莓,还有你想我了没';
        // var str12 = '你知道我最喜欢什么神? 你的眼神'
        // var str13 = '和你聊天宗感觉像在考试,事后寻思宗感觉没发挥好';

        // var str14 = '   ' + str11 + str12 + str13 + '     '
        
        // var str15 = '你怕麻烦不,能不能麻烦你跟我在一起'
        // var str16 = '你会喜欢我不,我会我教你';

        // console.log(str15+str14+str16);
        // var data = str14.trim();//去掉两侧的空格
        // console.log(str15+data+str16);


        // var data1 = str14.trimLeft();
        // var data2 = str14.trimStart();
        // console.log(str15+data1+str16);
        // console.log(str15+data2+str16);
        // var data3 = str14.trimRight();
        // var data4 = str14.trimEnd();
        // console.log(str15+data3+str16);
        // console.log(str15+data4+str16);

        // var str15 = 'java yyds  i want learn java';
        // var res = str15.replace('java','js')
        // console.log(res);

        // //js yyds  i want learn java

        
    </script>
</body>

</html>